<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <span>文件格式验证</span>
    <form action="" method="post" enctype="multipart/form-data">
        <!-- <input type="hidden" name="MAX_FILE_SIZE" value='2'> -->
        <input type="file" name='image'>
        <input type="submit" name='sub' value="上传">
</body>
<?php
//方法1  ：缺点。不能防止伪装攻击

// $image = ['.png', '.jpg', '.gif'];
// //   var_dump($_FILES);
// // 获取图片后缀
// if (!empty($_POST)) {
//     $name = $_FILES['image']['name'];
//     // echo $_FILES['image']['name'];
//     $key = strrchr($name, '.');

//     // 判断文件格式
//     if (in_array($key, $image)) {
//         // 判断是否能上传
//         if ($_FILES['image']['error'] == 0) {
//             $path = uniqid('user') . rand(100, 500) . $_FILES['image']['name'];
//             move_uploaded_file($_FILES['image']['tmp_name'], './upload/' . $path);
//             echo "上传成功";
//         } else {
//             echo "上传失败";
//         }
//     } else {
//         echo "文件格式错误";
//     }
// }

//方法2  通过$_FIELS[]['type']类型
// $allow=array('image/jpeg','image/png','image/gif');
// if(!empty($_POST)){
//     $name=$_FIELS['image']['type'];
//     if(in_array($name,$allow)){
//         if ($_FILES['image']['error'] == 0) {
//         $path = uniqid('user') . rand(100, 500) . $_FILES['image']['name'];
//         move_uploaded_file($_FILES['image']['tmp_name'], './upload/' . $path);
//         echo "上传成功";
//     }else{
//         echo "上传失败";
//     }
//   }else
//     echo "文件格式错误";

// }


//方法3：php_fileinfo扩展（可以防止文件伪装）
$allow=array('image/jpeg','image/png','image/gif');
// 创建一个fileinfo资源
$info=finfo_open(FILEINFO_MIME_TYPE);
// 将finfo资源和文件做比较
$min=finfo_file($info,$_FILES['image']['tmp_name']);

if(in_array($min,$allow)){
    if($_FIELS['image']['error']==0){
        $path = uniqid('user') . rand(100, 500) . $_FILES['image']['name'];
        echo '上传成功';
    }else{
        echo '上传失败';
    }
}else{
    echo '格式出现错误';
}
?>

</html>